package com.empire.module.member.controller.admin.superrelation.vo;

import com.empire.module.member.controller.admin.user.vo.MemberUserSimpleVO;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.List;

/**
 * 类名：RelationGraphDto
 * 描述：关系图Dto
 * 时间：2019/10/18 17:33
 *
 * @author baoxiaoxu
 */
@Data
public class RelationGraphDto {
    /**
     * 节点列表
     */
    private List<Node> nodeList;
    /**
     * 边列表
     */
    private List<Edge> edgeList;

    /**
     * 人员信息
     */
    private List<MemberUserSimpleVO> personInfoList;

    /**
     * 节点
     */
    @Data
    public static class Node {
        /**
         * 节点唯一ID
         */
        private long nodeId;
        /**
         * 节点名称
         */
        private String nodeName;
        /**
         * 节点图像
         */
        private String nodeIcon;
        /**
         * 节点号码（手机号/应用账号等）
         */
        private String nodeNumber;
        /**
         * 节点类型名称列表
         */
        private String typeName;
        /**
         * 是否重点人节点
         */
        @JsonProperty(value = "isKeyNode")
        private boolean isKeyNode;
        /**
         * 重点人ID
         */
        private Long personId;
        /**
         * 可以获取下个节点
         */
        private ImContactRelationDto.Node nextNode;
    }

    /**
     * 边
     */
    @Data
    public static class Edge {
        /**
         * 顶点1id
         */
        private long nodeId1;
        /**
         * 顶点2id
         */
        private long nodeId2;
        /**
         * 关系描述集合
         */
        private List<String> descriptions;

        private List<NodeDetail> nodeDetailList;
    }

    @Data
    @AllArgsConstructor
    public static class NodeDetail {
        /**
         * 类型
         * 手机短信 1000000002
         * 手机通话记录 1000000003
         */
        private Long type;
        /**
         * 类型名称
         */
        private String name;
        /**
         * 次数
         */
        private Long num;
        /**
         * 主账号
         */
        private String uniqueAccount;

    }
}
